#include <bits/stdc++.h>
using namespace std;
int va[200010], vb[200010]; // 使用数组替代 vector
// 使用滚动数组
int dp[2][200010];
int main() {
  int n;
  cin >> n;

  for (int i = 1; i <= n; i++) {
    int a, b;
    cin >> a >> b;
    if (a < b)
      swap(a, b);
    va[i] = a; // 存储 a_i
    vb[i] = b; // 存储 b_i
  }

  memset(dp, INT_MIN, sizeof(dp)); // 初始化为 INT_MIN
  dp[0][0] = 0;                    // 初始化

  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= 200000; j++) {
      dp[i % 2][j] = dp[(i - 1) % 2][j]; // 先复制前一行的状态
      if (dp[(i - 1) % 2][j] != INT_MIN) {
        // 选择 a_i
        dp[i % 2][max(j, va[i])] =
            max(dp[i % 2][max(j, va[i])], dp[(i - 1) % 2][j]);
        // 选择 b_i
        dp[i % 2][max(j, vb[i])] =
            max(dp[i % 2][max(j, vb[i])], dp[(i - 1) % 2][j]);
      }
    }
  }

  // 计算最小差值
  int result = INT_MAX;
  for (int j = 0; j <= 200000; j++) {
    if (dp[n % 2][j] != INT_MIN) {
      result = min(result, abs(j - dp[n % 2][j]));
    }
  }

  cout << result;

  return 0;
}